function y = cfb(Price,depth) Dep = max(min(depth,7),1)+7; z = icfb(Price,Dep,14); y = Oma(z,20,2); end function y = Oma(price,aP,constant) f01=0;f02=0;f03=0;f04=0;f05=0;f06=0; averagePeriod = max(aP,1); y = price; for r=3:length(price) minPeriod = min(averagePeriod,r)/2.0; maxPeriod = min(minPeriod*5.0,r); endPeriod = ceil(maxPeriod); signal = abs((price(r)-price(r-endPeriod+1))); noise = 0.00000000001; for i=1:endPeriod-1 noise=noise+abs(price(r)-price(r-i)); end averagePeriod = max(((signal/noise)*(maxPeriod-minPeriod))+minPeriod,1); Kg = (2.0+constant)/(1.0+constant+averagePeriod); Hg = 1.0-Kg; f01 = Kg * price(r) + Hg * f01; f02 = Kg * f01 + Hg * f02; v01 = 1.5 * f01 - 0.5 * f02; f03 = Kg * v01 + Hg * f03; f04 = Kg * f03 + Hg * f04; v02 = 1.5 * f03 - 0.5 * f04; f05 = Kg * v02 + Hg * f05; f06 = Kg * f05 + Hg * f06; v03 = 1.5 * f05 - 0.5 * f06; y(r) = v03; end end function y = cfbf(price,depth) y = zeros(length(price),1); v1 = 0; v3 = depth*price(2*depth); v2=0; roc=y;v11 = v1; for k=2*depth+1:length(price) roc(k) = abs(price(k)-price(k-1)); v1 = v1 - roc(k-depth) + roc(k); v2 = v2 - v11 + roc(k)*depth; v3 = v3 - price(k-1-depth) + price(k-1); v11 = v1; dividend = abs(depth*price(k)-v3); if (v2 ~= 0) y(k) = ( dividend / v2); else y(k) = 0; end end end function y = icfb(price,depth,Smooth) Depths = [2,3,4,6,8,12,16,24,32,48,64,96,128,192]; ic = zeros(length(price),28); y = zeros(length(price),1); for s =1:28 if(s<15) ic(:,s) = cfbf(price,Depths(s)); else ic(:,s) = zeros(length(price),1); end end for i=2*Smooth:length(price) suma = 0; sumb = 0; cfb = 0; evenCoef = 1; oddCoef = 1; for k=0:depth-1 ic(i,depth-1-k+15) = ic(i-1,depth-1-k+15) + (ic(i,depth-1-k+1)- ic(i-Smooth,depth-1-k+1))/Smooth; if (mod(depth -1 -k,2)==0) avg = oddCoef * ic(i,depth-1-k+15); oddCoef = oddCoef * (1 - avg); else avg = evenCoef * ic(i,depth-1-k+15); evenCoef = evenCoef * (1 - avg); suma = suma + avg*avg*Depths(depth-1-k+1); sumb = sumb + avg; end end if (sumb ~= 0) cfb = suma/sumb; end y(i) = max(cfb,0); end for k=1:200 y(k) = 0; end end